// 获取随机数
function getRandomString(n){
    var str="";
    while(str.length<n){
      str+=Math.random().toString(36).substr(2);
    }
    return str.substr(str.length-n)
}


/**
 * csrf拦截防护
 * @param req 请求 
 * @param res 响应
 * @param next 是否继续
 */
function csftProtect(req, res, next){

    // 如果是get请求则添加cookie请求头
    if(req.method === "GET"){
        let csrf_cookie = getRandomString(32);
        res.cookie("csrf_token", csrf_cookie);
        next();
    }
    if(req.method === "POST"){
        if(req.headers["x-csrftoken"] && req.headers["x-csrftoken"] === req.cookies["csrf_token"]){
            // console.log("csrf验证通过！");
            next();
        } else {
            res.json({errmsg:"危险操作，已拦截!"});
            return;
        }
    }

}

module.exports = csftProtect;

